<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>5</title>
        <!-- 引入Vue -->
        <script type="text/javascript" src="../js/vue.js"></script>
    </head>
    <body>
        <h1>computed和watch之间的区别</h1>
        <p>1. computed能完成的功能，watch都可以完成。</p>
        <p>2. watch能完成的功能，computed不一定能完成，例如：watch可以进行异步操作。</p>

        <h1>两个重要原则</h1>
        <p>1. 所被Vue管理的函数，最好写成普通函数，这样this的指向才是vm或组件实例对象。</p>
        <p>2. 所有不被vue管理的函数（定时器的回调函数、ajax的回调函数等、promise的回调函数），最好写成箭头函数，这样this的指向才是vm或组件实例对象。</p>

        <hr>


        <div id="root">
            姓：<input type="text" v-model="firstName"> <br><br>
            名：<input type="text" v-model="lastName"> <br><br>
            全名：<span>{{fullName}}</span>
        </div>
        <script type="text/javascript">
            Vue.config.productionTip = false    // 阻止Vue在启动时生成生产提示

            // 创建Vue实例，开端
            const vm = new Vue({
                el: '#root', // el用于指定当前Vue实例为哪个容器服务，值通常为css选择器字符串。
                data: {     // data中用于存储数据，数据供el指定的容器去使用
                    firstName: '张',
                    lastName: '三',
                    fullName: '张-三'
                },
                watch: {
                    firstName: function(val) {
                        this.fullName = val + "-" + this.lastName
                    },
                    lastName: function(val) {
                        this.fullName = this.firstName + '-' + val
                    }
                }
            })
        </script>
    </body>
</html>
